<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Make Controller Kit - Firmware API: network.h Source File</title>
<link href="mt_doxygen.css" rel="stylesheet" type="text/css" />
<link href="../resources/mt_doxytabs.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
.header {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 12pt;
	color: #222222;
}
-->
</style>
</head>

<body>
<table width="800" border="0">
    <tr>
      <td colspan="3">
        <form method="get" action="http://www.google.com/search">
          <div align="right">
            <input type="text"   name="q" size="25"
              maxlength="255" value="" />
            <input type="submit" value="Search" />
            <input type="hidden" name="sitesearch" value="makingthings.com/ref/firmware/html" />
          </div>
        </form>
       </td>
    </tr>
    <tr>
      <td><div align="center"><a href="http://www.makingthings.com">
				<img src="../resources/logo_brown_medium.png" alt="MakingThings"
									width="200" height="78" border="0" align="middle" longdesc="http://www.makingthings.com" /></a></div></td>
				<td><div align="center" class="header">
      		Make Controller Kit <br />
          Firmware API
      </div></td>
      <td><div align="center"><a href="http://www.makezine.com">
					<img src="../resources/make_logo.png" alt="MAKE Zine" 
										width="164" height="73" border="0" align="middle" longdesc="http://www.makezine.com" /></a></div></td>
    </tr>
</table>
</body>
</html>
<!-- Generated by Doxygen 1.5.4 -->
<script type="text/javascript">
<!--
function changeDisplayState (e){
  var num=this.id.replace(/[^[0-9]/g,'');
  var button=this.firstChild;
  var sectionDiv=document.getElementById('dynsection'+num);
  if (sectionDiv.style.display=='none'||sectionDiv.style.display==''){
    sectionDiv.style.display='block';
    button.src='open.gif';
  }else{
    sectionDiv.style.display='none';
    button.src='closed.gif';
  }
}
function initDynSections(){
  var divs=document.getElementsByTagName('div');
  var sectionCounter=1;
  for(var i=0;i<divs.length-1;i++){
    if(divs[i].className=='dynheader'&&divs[i+1].className=='dynsection'){
      var header=divs[i];
      var section=divs[i+1];
      var button=header.firstChild;
      if (button!='IMG'){
        divs[i].insertBefore(document.createTextNode(' '),divs[i].firstChild);
        button=document.createElement('img');
        divs[i].insertBefore(button,divs[i].firstChild);
      }
      header.style.cursor='pointer';
      header.onclick=changeDisplayState;
      header.id='dynheader'+sectionCounter;
      button.src='closed.gif';
      section.id='dynsection'+sectionCounter;
      section.style.display='none';
      section.style.marginLeft='14px';
      sectionCounter++;
    }
  }
}
window.onload = initDynSections;
-->
</script>
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="modules.html"><span>Modules</span></a></li>
    <li><a href="classes.html"><span>Data&nbsp;Structures</span></a></li>
    <li class="current"><a href="files.html"><span>Files</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
  </ul>
</div>
<h1>network.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*********************************************************************************</span>
<a name="l00002"></a>00002 <span class="comment"></span>
<a name="l00003"></a>00003 <span class="comment"> Copyright 2006 MakingThings</span>
<a name="l00004"></a>00004 <span class="comment"></span>
<a name="l00005"></a>00005 <span class="comment"> Licensed under the Apache License, </span>
<a name="l00006"></a>00006 <span class="comment"> Version 2.0 (the "License"); you may not use this file except in compliance </span>
<a name="l00007"></a>00007 <span class="comment"> with the License. You may obtain a copy of the License at</span>
<a name="l00008"></a>00008 <span class="comment"></span>
<a name="l00009"></a>00009 <span class="comment"> http://www.apache.org/licenses/LICENSE-2.0 </span>
<a name="l00010"></a>00010 <span class="comment"> </span>
<a name="l00011"></a>00011 <span class="comment"> Unless required by applicable law or agreed to in writing, software distributed</span>
<a name="l00012"></a>00012 <span class="comment"> under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR</span>
<a name="l00013"></a>00013 <span class="comment"> CONDITIONS OF ANY KIND, either express or implied. See the License for</span>
<a name="l00014"></a>00014 <span class="comment"> the specific language governing permissions and limitations under the License.</span>
<a name="l00015"></a>00015 <span class="comment"></span>
<a name="l00016"></a>00016 <span class="comment">*********************************************************************************/</span>
<a name="l00017"></a>00017 
<a name="l00018"></a>00018 <span class="comment">/*</span>
<a name="l00019"></a>00019 <span class="comment">  NETWORK.h</span>
<a name="l00020"></a>00020 <span class="comment"></span>
<a name="l00021"></a>00021 <span class="comment">  MakingThings</span>
<a name="l00022"></a>00022 <span class="comment">*/</span>
<a name="l00023"></a>00023 
<a name="l00024"></a>00024 <span class="preprocessor">#ifndef NETWORK_H</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#define NETWORK_H</span>
<a name="l00026"></a>00026 <span class="preprocessor"></span>
<a name="l00027"></a>00027 <span class="comment">// lwIP socket addresses are formatted this way...</span>
<a name="l00028"></a>00028 <span class="preprocessor">#define IP_ADDRESS( a, b, c, d ) ( ( (int)a &lt;&lt; 24 ) + ( (int)b &lt;&lt; 16 ) + ( (int)c &lt;&lt; 8 ) + (int)d )</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#define IP_ADDRESS_A( address )  ( ( (int)address &gt;&gt; 24 ) &amp; 0xFF )</span>
<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#define IP_ADDRESS_B( address )  ( ( (int)address &gt;&gt; 16 ) &amp; 0xFF ) </span>
<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#define IP_ADDRESS_C( address )  ( ( (int)address &gt;&gt;  8 ) &amp; 0xFF )</span>
<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#define IP_ADDRESS_D( address )  ( ( (int)address       ) &amp; 0xFF )</span>
<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="comment">// the lwIP netif structure formats the address the other way round...weird.</span>
<a name="l00034"></a>00034 <span class="preprocessor">#define NETIF_IP_ADDRESS( a, b, c, d ) ( ( (int)d &lt;&lt; 24 ) + ( (int)c &lt;&lt; 16 ) + ( (int)b &lt;&lt; 8 ) + (int)a )</span>
<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#define NETIF_IP_ADDRESS_D( address )  ( ( (int)address &gt;&gt; 24 ) &amp; 0xFF )</span>
<a name="l00036"></a>00036 <span class="preprocessor"></span><span class="preprocessor">#define NETIF_IP_ADDRESS_C( address )  ( ( (int)address &gt;&gt; 16 ) &amp; 0xFF ) </span>
<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="preprocessor">#define NETIF_IP_ADDRESS_B( address )  ( ( (int)address &gt;&gt;  8 ) &amp; 0xFF )</span>
<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor">#define NETIF_IP_ADDRESS_A( address )  ( ( (int)address       ) &amp; 0xFF )</span>
<a name="l00039"></a>00039 <span class="preprocessor"></span>
<a name="l00040"></a>00040 
<a name="l00041"></a>00041 <span class="comment">// Network API stuff</span>
<a name="l00042"></a>00042 <span class="keywordtype">int</span> <a class="code" href="group___network.html#g0989090dd4929827de8708269f808e5b" title="Sets whether the Network subsystem is active.">Network_SetActive</a>( <span class="keywordtype">int</span> active );
<a name="l00043"></a>00043 <span class="keywordtype">int</span> <a class="code" href="group___network.html#gb1f4725187ab9011d327ed8e05e4746c" title="Returns the active state of the Network subsystem.">Network_GetActive</a>( <span class="keywordtype">void</span> );
<a name="l00044"></a>00044 <span class="keywordtype">int</span> Network_Init( <span class="keywordtype">void</span> );
<a name="l00045"></a>00045 
<a name="l00046"></a>00046 <span class="keywordtype">int</span> <a class="code" href="group___network.html#g8efe3e0915b89c461da231653b7bd3b7" title="Set the IP address of the Make Controller.">Network_SetAddress</a>( <span class="keywordtype">int</span> a0, <span class="keywordtype">int</span> a1, <span class="keywordtype">int</span> a2, <span class="keywordtype">int</span> a3 );
<a name="l00047"></a>00047 <span class="keywordtype">int</span> <a class="code" href="group___network.html#g8f1c006937cf5985de44cf8cd0751642" title="Set the network mask of the Make Controller on your local network.">Network_SetMask</a>( <span class="keywordtype">int</span> a0, <span class="keywordtype">int</span> a1, <span class="keywordtype">int</span> a2, <span class="keywordtype">int</span> a3 );
<a name="l00048"></a>00048 <span class="keywordtype">int</span> <a class="code" href="group___network.html#g1a5be7ffdac1a43d83f6c84369d0bb55" title="Set the gateway address for the local network the Make Controller is on.">Network_SetGateway</a>( <span class="keywordtype">int</span> a0, <span class="keywordtype">int</span> a1, <span class="keywordtype">int</span> a2, <span class="keywordtype">int</span> a3 );
<a name="l00049"></a>00049 <span class="keywordtype">int</span> <a class="code" href="network_8c.html#ee640cb0ab458e093969dcbdfed7e246" title="Create a checksum for the current address settings and store it in EEPROM.">Network_SetValid</a>( <span class="keywordtype">int</span> v );
<a name="l00050"></a>00050 
<a name="l00051"></a>00051 <span class="keywordtype">int</span> <a class="code" href="group___network.html#gf5c24462c4ca5bfcf8a9ffdb80c290d8" title="Read the board&amp;#39;s current IP address.">Network_GetAddress</a>( <span class="keywordtype">int</span>* a0, <span class="keywordtype">int</span>* a1, <span class="keywordtype">int</span>* a2, <span class="keywordtype">int</span>* a3 );
<a name="l00052"></a>00052 <span class="keywordtype">int</span> <a class="code" href="group___network.html#ga0837a01a5bd814cae2a080f8b2bf86b" title="Read the board&amp;#39;s current network mask.">Network_GetMask</a>( <span class="keywordtype">int</span>* a0, <span class="keywordtype">int</span>* a1, <span class="keywordtype">int</span>* a2, <span class="keywordtype">int</span>* a3 );
<a name="l00053"></a>00053 <span class="keywordtype">int</span> <a class="code" href="group___network.html#ge91ce5f124fcfbabc529d75fc222d49e" title="Read the board&amp;#39;s current gateway address.">Network_GetGateway</a>( <span class="keywordtype">int</span>* a0, <span class="keywordtype">int</span>* a1, <span class="keywordtype">int</span>* a2, <span class="keywordtype">int</span>* a3 );
<a name="l00054"></a>00054 <span class="keywordtype">int</span> <a class="code" href="network_8c.html#66046b3c42a64a18478cdcc685e22528" title="Read the checksum for address settings in EEPROM, and determine if it matches the...">Network_GetValid</a>( <span class="keywordtype">void</span> );
<a name="l00055"></a>00055 
<a name="l00056"></a>00056 <span class="comment">// TCP stuff</span>
<a name="l00057"></a>00057 <span class="keywordtype">void</span>* <a class="code" href="group___sockets.html#g7e4b76e6d4a93aa7c281e5cbba6cc584" title="Create a new TCP socket connected to the address and port specified.">Socket</a>( <span class="keywordtype">int</span> address, <span class="keywordtype">int</span> port );
<a name="l00058"></a>00058 <span class="keywordtype">int</span> <a class="code" href="group___sockets.html#g838d1ceaf477b3496a9fe4adf8d28147" title="Read from a TCP socket.">SocketRead</a>( <span class="keywordtype">void</span>* socket, <span class="keywordtype">char</span>* data, <span class="keywordtype">int</span> length );
<a name="l00059"></a>00059 <span class="keywordtype">int</span> <a class="code" href="group___sockets.html#gabf4d267c62d67bd596a22daea799662" title="Read a line from a TCP socket terminated by CR LF (0x0D 0x0A).">SocketReadLine</a>( <span class="keywordtype">void</span>* socket, <span class="keywordtype">char</span>* data, <span class="keywordtype">int</span> length );
<a name="l00060"></a>00060 <span class="keywordtype">int</span> <a class="code" href="group___sockets.html#g1031bc0757e65ea265deb5dc3ded3029" title="Write to a TCP socket.">SocketWrite</a>( <span class="keywordtype">void</span>* socket, <span class="keywordtype">char</span>* data, <span class="keywordtype">int</span> length );
<a name="l00061"></a>00061 <span class="keywordtype">void</span> <a class="code" href="group___sockets.html#geab922d85a99bd7577f5e5b54628a5b4" title="Close an existing TCP socket.">SocketClose</a>( <span class="keywordtype">void</span>* socket );
<a name="l00062"></a>00062 
<a name="l00063"></a>00063 <span class="keywordtype">void</span>* <a class="code" href="group___sockets.html#g19a37ffe799e0d2de090a24a03e38cb7" title="Create a new TCP server socket and start listening for connections.">ServerSocket</a>( <span class="keywordtype">int</span> port );
<a name="l00064"></a>00064 <span class="keywordtype">void</span>* <a class="code" href="group___sockets.html#g17066cbe7e4510e8c89bba318140ff30" title="Accept an incoming connection to a ServerSocket that you have created.">ServerSocketAccept</a>( <span class="keywordtype">void</span>* serverSocket );
<a name="l00065"></a>00065 <span class="keywordtype">int</span> <a class="code" href="group___sockets.html#gd698a1f1aa9b0f2864056a0790417179" title="Close a ServerSocket that you have created.">ServerSocketClose</a>( <span class="keywordtype">void</span>* serverSocket );
<a name="l00066"></a>00066 
<a name="l00067"></a>00067 <span class="keywordtype">int</span> SocketSendDecimal( <span class="keywordtype">void</span> *socket, <span class="keywordtype">int</span> d );
<a name="l00068"></a>00068 
<a name="l00069"></a>00069 <span class="comment">// UDP stuff</span>
<a name="l00070"></a>00070 <span class="keywordtype">void</span>* <a class="code" href="group___sockets.html#g2cd3724da41c8c8235fa648a6fc9bcce" title="Create a socket to read and write UDP packets.">DatagramSocket</a>( <span class="keywordtype">int</span> port );
<a name="l00071"></a>00071 <span class="keywordtype">int</span> <a class="code" href="group___sockets.html#g5aa01e1403bafbfca35746bcd44a5c83" title="Send a UDP packet to a specified address.">DatagramSocketSend</a>( <span class="keywordtype">void</span>* datagramSocket, <span class="keywordtype">int</span> address, <span class="keywordtype">int</span> port, <span class="keywordtype">void</span>* data, <span class="keywordtype">int</span> length );
<a name="l00072"></a>00072 <span class="keywordtype">int</span> <a class="code" href="group___sockets.html#ge810fd22358d4358b214bb99c20f363f" title="Receive a UDP packet.">DatagramSocketReceive</a>( <span class="keywordtype">void</span>* datagramSocket, <span class="keywordtype">int</span> receivingPort, <span class="keywordtype">int</span>* address, <span class="keywordtype">int</span>* port, <span class="keywordtype">void</span>* data, <span class="keywordtype">int</span> length );
<a name="l00073"></a>00073 <span class="keywordtype">void</span> <a class="code" href="group___sockets.html#g2d63455f4c8feff3399c73f70e3300b7" title="Close a DatagramSocket().">DatagramSocketClose</a>( <span class="keywordtype">void</span>* socket );
<a name="l00074"></a>00074 
<a name="l00075"></a>00075 <span class="comment">// DHCP stuff</span>
<a name="l00076"></a>00076 <span class="keywordtype">void</span> <a class="code" href="group___network.html#gc61ff10637ea2e5a44c4af330693e9e0" title="Set whether DHCP is enabled.">Network_SetDhcpEnabled</a>( <span class="keywordtype">int</span> enabled );
<a name="l00077"></a>00077 <span class="keywordtype">int</span> <a class="code" href="group___network.html#ge24b6f9eecab6b6339bfc19524ff3f60" title="Read whether DHCP is currently enabled.">Network_GetDhcpEnabled</a>( <span class="keywordtype">void</span> );
<a name="l00078"></a>00078 
<a name="l00079"></a>00079 <span class="comment">// WebServer Stuff</span>
<a name="l00080"></a>00080 <span class="keywordtype">void</span> <a class="code" href="group___network.html#g8e37b3166ad4cafc5261e3de373e9261" title="Set whether the demo webserver is enabled.">Network_SetWebServerEnabled</a>( <span class="keywordtype">int</span> enabled );
<a name="l00081"></a>00081 <span class="keywordtype">int</span> <a class="code" href="group___network.html#g371af21b1030735315a0c101aee27ace" title="Read whether the demo webserver is enabled.">Network_GetWebServerEnabled</a>( <span class="keywordtype">void</span> );
<a name="l00082"></a>00082 <span class="keywordtype">void</span> Network_StartWebServer( <span class="keywordtype">void</span> );
<a name="l00083"></a>00083 <span class="keywordtype">void</span> Network_StopWebServer( <span class="keywordtype">void</span> );
<a name="l00084"></a>00084 
<a name="l00085"></a>00085 <span class="comment">// NetworkOsc Interface</span>
<a name="l00086"></a>00086 <span class="keyword">const</span> <span class="keywordtype">char</span>* NetworkOsc_GetName( <span class="keywordtype">void</span> );
<a name="l00087"></a>00087 <span class="keywordtype">int</span> NetworkOsc_ReceiveMessage( <span class="keywordtype">int</span> channel, <span class="keywordtype">char</span>* message, <span class="keywordtype">int</span> length );
<a name="l00088"></a>00088 <span class="keywordtype">int</span> NetworkOsc_Poll( <span class="keywordtype">void</span> );
<a name="l00089"></a>00089 <span class="keywordtype">void</span> NetworkOsc_SetUdpListenPort( <span class="keywordtype">int</span> port );
<a name="l00090"></a>00090 <span class="keywordtype">int</span> NetworkOsc_GetUdpListenPort( <span class="keywordtype">void</span> );
<a name="l00091"></a>00091 <span class="keywordtype">void</span> NetworkOsc_SetUdpSendPort( <span class="keywordtype">int</span> port );
<a name="l00092"></a>00092 <span class="keywordtype">int</span> NetworkOsc_GetUdpSendPort( <span class="keywordtype">void</span> );
<a name="l00093"></a>00093 <span class="keywordtype">void</span> NetworkOsc_SetTcpOutAddress( <span class="keywordtype">int</span> a0, <span class="keywordtype">int</span> a1, <span class="keywordtype">int</span> a2, <span class="keywordtype">int</span> a3 );
<a name="l00094"></a>00094 <span class="keywordtype">int</span> NetworkOsc_GetTcpOutAddress( <span class="keywordtype">void</span> );
<a name="l00095"></a>00095 <span class="keywordtype">int</span> NetworkOsc_GetTcpOutPort( <span class="keywordtype">void</span> );
<a name="l00096"></a>00096 <span class="keywordtype">void</span> NetworkOsc_SetTcpOutPort( <span class="keywordtype">int</span> port );
<a name="l00097"></a>00097 <span class="keywordtype">void</span> NetworkOsc_SetTcpAutoConnect( <span class="keywordtype">int</span> yesorno );
<a name="l00098"></a>00098 <span class="keywordtype">int</span> NetworkOsc_GetTcpAutoConnect( <span class="keywordtype">void</span> );
<a name="l00099"></a>00099 <span class="keywordtype">int</span> NetworkOsc_GetTcpRequested( <span class="keywordtype">void</span> );
<a name="l00100"></a>00100 
<a name="l00101"></a>00101 <span class="preprocessor">#endif</span>
</pre></div><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Make Controller Kit</title>
<style type="text/css">
<!--
.footer {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 9pt;
	color: #999999;
}
-->
</style>
</head>

<body>
<hr size="1">
<div>
  <p class="footer">The Make Controller Kit is an open source project maintained by <a href="http://www.makingthings.com">MakingThings</a>.<br />
    MakingThings code is released under the <a href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">Apache 2.0 license</a>.<br />
    Bug tracker, development wiki and status can be found at <a href="http://dev.makingthings.com">http://dev.makingthings.com</a>.<br />
		This document was last updated on 5 Dec 2007.
</p>
</div>
<!-- Google Analytics Code -->
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-769030-1";
urchinTracker();
</script>
</body>
</html>
